package controllers;
import akka.actor.ActorRef;
import akka.actor.Props;
import com.fasterxml.jackson.databind.JsonNode;
import play.libs.Akka;
import play.mvc.*;
import services.LogProtocol;
import services.LogService;
import services.UserService;
import views.html.*;
public class Application extends Controller {
public Result index() {
return ok(index.render());
}
public WebSocket<JsonNode> streamLogs() {
return WebSocket.whenReady((in, out) -> {
// Create new UserService and stream the current log history
final ActorRef user = Akka.system().actorOf(Props.create(UserService.class, out));
LogService.instance().tell(new LogProtocol.Watch(), user);
// on close, tell the userActor to shutdown
in.onClose(() -> {
LogService.instance().tell(new LogProtocol.Unwatch(), user);
});
});
}
}